import os

import json
from template_manager import select_template_interaction, display_templates
from ecard_generator import fill_template_content_interaction, preview_and_generate_ecard_interaction
from storage_manager import load_templates, load_my_ecards, save_my_ecard, view_my_saved_ecards_interaction

# 初始化程序状态
selected_template = None
filled_values = {}
templates = []
my_ecards = []


def display_main_menu():
    """打印主菜单"""
    print("\n===== DIY电子贺卡制作系统 ======")
    print("1. 选择贺卡模板")
    print("2. 填写贺卡内容")
    print("3. 预览并生成贺卡")
    print("4. 管理我的贺卡（探索功能）")
    print("5. 退出程序")
    print("================================")


def main_loop():
    global selected_template, filled_values, templates, my_ecards

    # 初始化数据目录
    if not os.path.exists("data"):
        os.makedirs("data")

    # 加载模板（从文件或硬编码）
    templates = load_templates()

    # 探索功能：加载已保存的贺卡
    my_ecards = load_my_ecards()

    while True:
        display_main_menu()
        choice = input("请输入选项数字：").strip()

        if choice == "1":
            # 选择模板
            selected_template = select_template_interaction(templates)
            if selected_template:
                print(f"已选择模板：{selected_template['name']}")
            else:
                print("模板选择无效，请重新操作。")

        elif choice == "2":
            # 填写内容：检查是否已选模板
            if not selected_template:
                print("请先选择模板（选项1）！")
                continue
            filled_values = fill_template_content_interaction(selected_template)
            print("内容填写完成！")

        elif choice == "3":
            # 预览生成：检查模板和内容是否完整
            if not selected_template or not filled_values:
                print("请先完成模板选择（选项1）和内容填写（选项2）！")
                continue

            # 生成贺卡
            ecard_data = preview_and_generate_ecard_interaction(selected_template, filled_values)

            # 探索功能：询问是否保存
            save_choice = input("是否保存此贺卡？(y/n)：").strip().lower()
            if save_choice == "y":
                save_my_ecard(ecard_data)
                my_ecards = load_my_ecards()  # 重新加载确保最新数据

        elif choice == "4":
            # 探索功能：管理已保存的贺卡
            view_my_saved_ecards_interaction(my_ecards)

        elif choice == "5":
            print("感谢使用！程序已退出。")
            break

        else:
            print("无效选项，请输入1-5的数字。")


if __name__ == "__main__":
    main_loop()